/*
	created time:2018/4/11
	author:Chason
	describe:开始游戏 (按钮)
*/
class BeginGameBtn extends eui.Component{
	public constructor() {
		 super();
		 this.skinName = "beginGameBtn";
	}

	private  stageWidth=egret.MainContext.instance.stage.stageWidth;
	private  stageHeight=egret.MainContext.instance.stage.stageHeight;

    protected childrenCreated(): void {
        super.childrenCreated();
        this.init();
    }

	public init():void{
		this.touchEnabled=true;
		this.y=Basic.meBtnInitY(this.stageHeight);
		this.x=this.stageWidth/2
		this.anchorOffsetX=116;
		this.anchorOffsetY=34;
		Basic.touchScaleBtn(this);
	}

	/*
	   外部监听点击此按钮---初始化一些基本的游戏	
	   显示头像,卡牌出现音乐，卡牌出现动画	

	        type:"mess" || 'match',
			isLandlord:isLandlord?"me":"A",  //A,B,me
			stageWidth:this.stageWidth,
			stageHeight:this.stageHeight,
			wrap:装的容器,
			meArr,  //本玩家数组
			BPlayerArr //B玩家数组----只有闯关模式才有此数组,
			stage, //这里主要为了给设置头像---其他都用wrap
	*/
	public static beginInitGame(obj){
		 //卡牌出现一刹那背景音乐
		 Music.musicOncePlay("MessCardOut_mp3");
		 //显示头像
		 this.messFigure('mess',obj.isLandlord,obj.stageWidth,obj.stageHeight,obj.stage);
		 //本玩家--添加扑克到容器和扑克展开动画
		 this.meCardPlayAnimation(obj.meArr,obj.stageWidth,obj.stageHeight,obj.wrap);
		 //残局玩家B对方出现牌动画或者其他玩家出现牌动画
		 if(obj.type=='mess'){
			  this.messBCardAnimation(obj.BPlayerArr,obj.stageWidth,obj.stageHeight,obj.wrap);
		 }else{
			 console.log("非残局模式---其他玩家动画未完善")
		 }
		 
	  
	}

	//本玩家(自己)--添加扑克到容器以及扑克的展开
	/*
	    参数:
		arr：Array
		stageWidth：舞台宽度
		stageHeight:舞台高度
		wrap:显示容器
	*/
	public static meCardPlayAnimation(arr:Array<any>,stageWidth,stageHeight,wrap):void{
			//设置扑克数组的中间值
			let meArrCenterNum=Math.round((arr.length-1)/2);
			for(let i=0;i<arr.length;i++){
				//设置卡牌的初始化显示位置(水平为默认居中)到舞台
					arr[i].x=stageWidth/2;
					arr[i].y=Basic.meCardInitY(stageHeight);
					arr[i].isMe=true;//标记本卡牌为玩家自己
					wrap.addChild(arr[i]);
					//扑克出现的动画(从中间向两端展开)
					if(i==meArrCenterNum){
						let tw = egret.Tween.get(arr[i] );
						tw.to({x:stageWidth/2},500,egret.Ease.backOut)
					}else if(i<meArrCenterNum){
						let tw = egret.Tween.get(arr[i] );
						tw.to({x:stageWidth/2-(meArrCenterNum-i)*45},500,egret.Ease.backOut)
					}else{
						let tw = egret.Tween.get( arr[i] );
						tw.to({x:stageWidth/2+(i-meArrCenterNum)*45},500,egret.Ease.backOut)
					}
			}
	 }




	 /*
		玩家人物
		type:mess | match  --残局模式|常规比赛
		landlord:A|B|me :string,
		wrap:这里是舞台--这样才有层叠关系(主要因为背景桌子和背景图没有分离--资源有限)
	*/
	public static messFigure(type,landlord,stageWidth,stageHeight,wrap):void{
		//本玩家是地主
		let meDiZhu=()=>{
			let landlordImg=new egret.Bitmap(RES.getRes("figure_json.MeDiZhu"));
			landlordImg.y=stageHeight*0.65;
			landlordImg.x=-40;
			wrap.addChild(landlordImg);
		}
		//本玩家是农名
		let meNongMing=()=>{
			let meNonMing=new egret.Bitmap(RES.getRes("figure_json.ANonMing"));
			meNonMing.x=0;
			meNonMing.y=stageHeight*0.62;
			wrap.addChild(meNonMing);
		}
		//A农民
		let ANonMing=()=>{
			let ANonMing=new egret.Bitmap(RES.getRes("figure_json.ANonMing"));
			ANonMing.x=-40;
			ANonMing.y=stageHeight*0.25;
			wrap.addChildAt(ANonMing,1);
		}
		//A地主
		let ADiZhu=()=>{
			let ADiZhu=new egret.Bitmap(RES.getRes("figure_json.MeDiZhu"));		
			ADiZhu.y=stageHeight*0.25;
			wrap.addChildAt(ADiZhu,1);
		}
		//B农名
		let BNonMing=()=>{
			let BNonMing=new egret.Bitmap(RES.getRes("figure_json.BNonMing"));
			BNonMing.x=stageWidth*0.9;
			BNonMing.y=stageHeight*0.25;
			wrap.addChildAt(BNonMing,1);
		}
		//B地主
		let BDiZhu=()=>{
			let BDiZhu=new egret.Bitmap(RES.getRes("figure_json.BDiZhu"));		
			BDiZhu.y=stageHeight*0.25;
			BDiZhu.x=stageWidth*0.9;
			wrap.addChildAt(BDiZhu,1);
		}


		if(type=='mess'){
			if(landlord){
			//本玩家是地主
				meDiZhu();
				BNonMing();
			}else{
				meNongMing();
				BDiZhu();
			}
		}else{
			//预留功能--常规比赛中的玩家人物
			alert("玩家人物--常规比赛-(预留功能)");
		}
	}



	//残局B玩家--添加扑克到容器以及扑克的展开
	/*
	    参数:
		arr：Array
		stageWidth：舞台宽度
		stageHeight:舞台高度
		wrap:显示容器
	*/
	public static messBCardAnimation(arr:Array<any>,stageWidth,stageHeight,wrap){
		for(let i=0;i<arr.length;i++){
			arr[i].x=stageWidth-200;
			arr[i].y=150;
			wrap.addChild(arr[i]);
			//扑克出现的动画(从右向左展开)
			if(i==arr.length-1){
                let tw = egret.Tween.get(arr[i] );
				tw.to({x:stageWidth-200},500,egret.Ease.backOut)
			}else{
				let tw = egret.Tween.get(arr[i] );
				tw.to({x:stageWidth-200-(arr.length-1-i)*45},500,egret.Ease.backOut)
			}
		}
	}


}